package org.hank.wanandroid.viewmodel

import androidx.lifecycle.MutableLiveData
import org.hank.wanandroid.base.BaseViewModel
import org.hank.wanandroid.bean.ArticleBean
import org.hank.wanandroid.bean.ErrInfo
import org.hank.wanandroid.bean.HomeBannerBean
import org.hank.wanandroid.bean.PageArticleBean

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *@auth: Hank
 *邮箱: cs16xiaoc1@163.com
 *创建时间: 2021/4/16 9:48
 *描述:
 */
class HomePageViewModel : BaseViewModel() {
    var bannerLive: MutableLiveData<MutableList<HomeBannerBean>> = MutableLiveData()
    var articleLive: MutableLiveData<PageArticleBean> = MutableLiveData()

    fun getBanner() {
        remoteDataSource.enqueue({
            getHomeBanner()
        }) {
            onSuccess {
                bannerLive.value = it
            }
            onFailed {

            }
            onFinally {

            }
            onCancelled {

            }
        }
    }

    fun getArticle(pageNum: Int) {
        if (pageNum == 0)
            remoteDataSource.enqueue({
                getHomeArticleTop()
            }, {
                getHomeArticle(pageNum)
            }) {
                onSuccess { dataA, dataB ->
                    var tempMutableList: MutableList<ArticleBean> = ArrayList()
                    tempMutableList.addAll(dataA)
                    tempMutableList.addAll(dataB.datas!!)
                    dataB.datas = tempMutableList
                    articleLive.value = dataB
                }
                onFailed {
                    errLive.value = ErrInfo(it.errorMessage, it.errorCode.toString())
                }
                onCancelled {
                    //两个接口请求时，超时会走到cancel这里
                    errLive.value = ErrInfo()
                }
            }
        else
            remoteDataSource.enqueue({
                getHomeArticle(pageNum)
            }) {
                onSuccess {
                    articleLive.value = it
                }
                onFailed {
                    errLive.value = ErrInfo(it.errorMessage, it.errorCode.toString())
                }
            }
    }
}